/*
session 会话：保存状态的对象，和cookie有点类似，保存数据
session 是只能服务端操作，存储在服务器端，只能服务端进行操作。
session 需要依赖cookie，需要通过cookie存储一个sessionID，所以如果人为的把cookie禁用了，那么session也失去了效果。
*/

// 通过nodejs服务端操作session
// 1，设置session 2.获取session的值 3.删除session
const express = require('express');
let app = express();
// 基于一个第三方中间件 express-session
// 1.需要安装express-session 2.引入express-session，配置session
let session = require('express-session');

app.use(session({
    name:'myid', // 设置sessionID   存储的cookie名称
    secret:'mysecret', // 加密对象的时候需要的密码
    resave:true, //有连接过来的时候，session会重新创建
    saveUninitialized: true, // 客户端的存放session的cookie是否需要重新保存
    cookie:{  // 设置客户端 cookie存放sessionID的配置
        maxAge:3600*1000,
        httpOnly:true
    }
}))

app.get('/setsession',(req,res)=>{
    // 设置session的值， 通过req设置 session存放在服务器，所以只能通过req来设置。
    req.session.username = 'zhangsan';
    res.send('设置session');
})

app.get('/getsession',(req,res)=>{
    // 获取session的值
    console.log(req.session.username);
    res.send('hello'+req.session.username);
})

app.get('/delsession',(req,res)=>{
    // 删除session
    req.session.destroy();
    res.send('删除session');
})

app.listen(8080);

/*
总结：session 1.存session，req.session.字段 = '值‘；
             2. 获取req.session.字段 ； （注意不要重启服务器，一旦重启session会重置）
             3. 删除session：req.session.destroy();
             4.session需要借助cookie来存放sessionID
*/ 